/*
 * @Author: 姚潘涛
 * @Date: 2024-04-08 15:18:03
 * @LastEditors: 姚潘涛
 * @LastEditTime: 2024-10-10 16:45:24
 * @Description:
 *
 * Copyright (c) 2024 by pandaman, All Rights Reserved.
 */
#ifndef XICT_DRIVER_UTILS_ECAL_PUBLISHER_MANAGER_H
#define XICT_DRIVER_UTILS_ECAL_PUBLISHER_MANAGER_H

#include "xict_driver/param/drivers_params.h"
#include "xict_driver/utils/data_converter.h"
#include <ecal/ecal.h>
#include <ecal/msg/protobuf/dynamic_publisher.h>
#include <ecal/msg/protobuf/publisher.h>
#include <ecal/msg/protobuf/subscriber.h>
#include <map>
#include <memory>

namespace xict_driver {
    namespace utils {
        // class DriversParams;
        /**
         * @brief eCAL发布器管理器
         *
         */
        class EcalPublisherManager {
        public:
            /**
             * @brief Construct a new Ecal Publisher Manager object
             *
             */
            EcalPublisherManager();

            /**
             * @brief Initialize 初始化
             *
             * @param _driver_params
             */
            void
            Initialize(const std::shared_ptr<xict_driver::param::DriversParams>&
                           _driver_params);

        public:
            std::map<std::string,
                     eCAL::protobuf::CPublisher<xcmg_proto::OpencvImage>>
                image_publisher_;
        };
    }   // namespace utils
}   // namespace xict_driver

#endif